/*
 * New BSD License
 * 
 * Copyright (c) 2008, Dan Crawford, Philip Nichols, Jacob Siegel, Tim Stefanski, Justin Williamson All rights reserved.
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
 * in the documentation and/or other materials provided with the distribution.
 * Neither the name of the Artemis Group nor the names of its contributors may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE. 
 * 
 * Project Artemis
 */


package ALDITS;

import java.awt.Graphics;
/*
 * Class SFS (747) draws the wake of a Seven Forty Seven Object
 * Holds (x,y) location of vertex, size (=width), and direction (n,s,e,w)
 * 
 * Current Issues:  Detecting Collisions
 * 					
 */
public class SFS extends MapObject{//Seven Forty Seven
//int x;//x,y are the coordinates of the nose of the 747
	//int y;
	int size;//width of plane, ie undrawn hypotenuse of the shape
	int dir;// 0 = face north, 1 = east, 2 = south, 3 = west
	int speed;
	public SFS (int x, int y, int size, int dir)
	{
		this.x = x;
		this.y = y;
		this.size = size;
		this.dir = dir;
		speed=15;
	}
	public void newLoc (int x, int y)
	{
		this.x = x;
		this.y = y;
	}
	
	public void update(){
		x += Math.cos(dir) * speed;
		y += Math.sin(dir) * speed;
		
	}
	public void draw(Graphics g)
	{	
		int [] xPoints = new int [3];
		int [] yPoints = new int [3];
		int nPoints = 3;
		xPoints [1] = x;
		yPoints [1] = y;
		int half = size/2;
		if (dir == 0)
		{
			xPoints [0] = x - half;
			yPoints [0] = y + half;
			xPoints [2] = x + half;
			yPoints [2] = y + half;
		}
		if (dir == 1)
		{
			xPoints [0] = x - half;
			yPoints [0] = y - half;
			xPoints [2] = x - half;
			yPoints [2] = y + half;
		}
		if (dir == 2)
		{
			xPoints [0] = x - half; 
			yPoints [0] = y - half; 
			xPoints [2] = x + half;
			yPoints [2] = y - half;
		}
		if (dir == 3)
		{
			xPoints [0] = x + half;
			yPoints [0] = y - half;
			xPoints [2] = x + half;
			yPoints [2] = y + half;
		}
		g.drawPolyline(xPoints, yPoints, nPoints);
	}
	public int [] getLocation ()
	{
		int [] loc = {x, y};
		return loc;
	}
	/*
	 * If you try to understand these line equations,
	 * Remember that the swing frame y coordinates increase downwards!
	 */
	public boolean collision(int xer, int yer)//$ALDITS007
	{
		int [] loc = {x, y};
		int [] plane = {xer, yer};
		double dist = Map.distanceFormula(loc, plane);
		if (dist > size/2 + 10)
			return false;
		return true;
	}
	public String toStateMsg() {
		// TODO Auto-generated method stub
		return "747"+"~"+x+"~"+y+"~"+dir;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return null;
	}
}
